package com.zlp.controller;

import cn.hutool.json.JSONObject;
import com.zlp.dto.LoginUserReq;
import com.zlp.entity.User;
import com.zlp.service.FileRequestServer;
import com.zlp.utils.RestTemplateUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;

/**
 * @Classname RestController
 * @Description TODO
 * @Date 2022/9/20 15:22
 * @Created by ZouLiPing
 */
@Slf4j
@RestController
@RequiredArgsConstructor
public class RestelateController {

    private final FileRequestServer fileRequestServer;
    private final RestTemplateUtil restTemplateUtil;




    @GetMapping("/restInsert")
    public String sendThymeleaf() {
        String url = "http://127.0.0.1:8082/basic/user/insert";

        // POST请求时，参数可以为Map对象也可以为具体的实体对象,二选一
//        Map<String, Object> paramMap = new HashMap<>();
//        paramMap.put("name", "测试名称");
//        paramMap.put("gender", "男");
//        paramMap.put("age", 10);

        LoginUserReq paramMap = new LoginUserReq();
        paramMap.setUsername(System.currentTimeMillis()+"32323");
        paramMap.setPassword(System.currentTimeMillis()+"222");



        // POST请求时，参数可以为Map对象也可以为具体的实体对象,二选一
        // UserParam param= new UserParam ();
        // param.setName("测试名称");
        // param.setgender("男");
        // param.setAge(10);

        /**
         * 带请求头的POST请求调用方式
         *
         * @param url 请求URL
         * @param headers 请求头参数
         * @param requestBody 请求参数体
         * @param responseType 返回对象类型
         * @param uriVariables URL中的变量，与Map中的key对应
         * @return ResponseEntity 响应对象封装类
         */

        // 封装头
        Map<String, String> headers = new HashMap<>();
        headers.put("token", "123456");
        // 设置响应实体,比如为User,那么传入User.class即可
        ResponseEntity<JSONObject> result = restTemplateUtil.post(url, headers, paramMap, JSONObject.class);
        JSONObject body = result.getBody();
        return body.toString();
    }

}
